package com.jintoufs.util.file;

import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.text.SimpleDateFormat;
import java.util.Date;

import org.apache.commons.io.FileUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.cosmos.modules.exception.ServiceException;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.multipart.MultipartHttpServletRequest;

import javax.servlet.http.HttpServletRequest;

/**
 * 上传文件
 * 创建人：FH 创建时间：2014年12月23日
 * @version
 */
public class FileUpload {

	/**
	 * @param file 			//文件对象
	 * @param filePath		//上传路径
	 * @param fileName		//文件名
	 * @return  文件名
	 */
	public static String fileUp(MultipartFile file, String filePath, String fileName){
		String extName = ""; // 扩展名格式：
		try {
			if (file.getOriginalFilename().lastIndexOf(".") >= 0){
				extName = file.getOriginalFilename().substring(file.getOriginalFilename().lastIndexOf("."));
			}
			copyFile(file.getInputStream(), filePath, fileName+extName);
		} catch (IOException e) {
			System.out.println(e);
		}
		return fileName+extName;
	}
	/**
	 * @param file 			//文件对象
	 * @param filePath		//上传路径
	 * @return  文件名
	 */
	public static void fileUp(MultipartFile file, String filePath){
		String extName = ""; // 扩展名格式：
		try {
			copyFile(file.getInputStream(), filePath, file.getName());
		} catch (IOException e) {
			throw new ServiceException("上传文件保存失败！",e);
		}
	}

	/**
	 * 写文件到当前目录的upload目录中
	 * 
	 * @param in
	 * @throws IOException
	 */
	public static File copyFile(InputStream in, String dir, String realName)
			throws IOException {
		File file = new File(dir, realName);
		if (!file.exists()) {
			if (!file.getParentFile().exists()) {
				file.getParentFile().mkdirs();
			}
			file.createNewFile();
		}
		FileUtils.copyInputStreamToFile(in, file);
		return file;
	}

	/**
	 * 保存文件名为fName的，并且返回保存的路径
	 * @param path 保存位置
	 * @return
	 */
	public static String saveFile(MultipartFile multipartFile,String path){
		if(multipartFile.isEmpty()){
			return "";
		}
		Date createdTime = new Date();
		//根据真实路径创建目录
		File logoSaveFile = new File(path);
		if (!logoSaveFile.exists())
			logoSaveFile.mkdirs();
		// 获取文件名/
		String filename = multipartFile.getOriginalFilename();
		long time = createdTime.getTime(); // 时间
		int index = filename.lastIndexOf(".");
		if (index == -1) {
			filename = "" + time; // 文件名
		} else {
			filename = "" + time
					+ filename.substring(index);
		}
		//拼成完整的文件保存路径加文件
		String fileName = path + File.separator + filename;
		File file = new File(fileName);
		try {
			//保存上传文件
			multipartFile.transferTo(file);
			//保存图片路径
		} catch (Exception e) {
			e.printStackTrace();
		}
		return fileName;
	}

}
